public class MisionPatrullarBaseParametros {
	
	private int vueltasTotales = 0;
	
	public void ejecutar(Nave miNave, int vueltas, int radio) {
		
		vueltasTotales = vueltasTotales + vueltas;
		
		/*La nave debe estar al Norte de la base*/
		for(int i = 0; i < vueltas; i++){
			
			for(int norteInicial = 1; norteInicial < radio; norteInicial++){
				miNave.avanzarAlNorte();
			}
			
			this.avanzarAlOeste(miNave, radio);
			
			int dobleRadio = radio*2;
			
			this.avanzarAlSur(miNave, dobleRadio);
			
			this.avanzarAlEste(miNave, dobleRadio);
			
			this.avanzarALNorte(miNave, dobleRadio);
			
			this.avanzarAlOeste(miNave, radio);
			
			/*Regresa a la base quedando al norte de la base.*/
			this.avanzarAlSur(miNave, radio-1);
		}
		
	}

	public int getVueltasTotales() {
		return vueltasTotales;
	}
	
	private void avanzarAlEste(Nave miNave, int posiciones){
		Radar miRadar = miNave.getRadar();
		
		for(int pasosEste = 0; pasosEste < posiciones ; pasosEste++){
			while(miRadar.escanearEste() != Espectro.VACIO){
				miNave.atacarAlEste();
			}
			miNave.avanzarAlEste();
		}
	}
	
	private void avanzarAlOeste(Nave miNave, int posiciones){
		for(int pasosOeste = 1; pasosOeste < posiciones ; pasosOeste++){
			miNave.avanzarAlOeste();
		}
	}
	
	private void avanzarALNorte(Nave miNave, int posiciones){
		for(int pasosSur = 0; pasosSur < posiciones ; pasosSur++){
			miNave.avanzarAlSur();
		}
	}
	
	private void avanzarAlSur(Nave miNave, int posiciones){
		for(int pasosSur = 0; pasosSur < posiciones ; pasosSur++){
			miNave.avanzarAlSur();
		}
	}
	
}
